Collections.sort() মেথডের ব্যবহার

Comparable এবং Comparator Interface - জাভা ইউটিল.প্যাকেজ (Java.util Package) - Java Technologies

339

Collections.sort() মেথডটি Java.util প্যাকেজে অন্তর্ভুক্ত একটি অত্যন্ত গুরুত্বপূর্ণ মেথড, যা একটি List ইন্টারফেসের উপাদানগুলোকে সজ্জিত (sort) করতে ব্যবহৃত হয়। এই মেথডটি ডিফল্টভাবে natural ordering অনুসরণ করে, অর্থাৎ, যদি আপনার List-এ কোনো Comparable অবজেক্ট থাকে, তবে এটি তাদের natural order (যেমন, সংখ্যা অনুযায়ী, অক্ষর অনুযায়ী) অনুসারে সাজিয়ে দেবে।

Collections.sort() মেথডের বৈশিষ্ট্য:

  1. Natural Ordering:
    • যদি List-এ থাকা উপাদানগুলি Comparable ইন্টারফেস ইমপ্লিমেন্ট করে, তবে Collections.sort() তাদের natural order অনুযায়ী সাজায়। উদাহরণস্বরূপ, String এবং Integer ক্লাসগুলি ইতিমধ্যেই Comparable ইন্টারফেস ইমপ্লিমেন্ট করে এবং তাদের natural ordering রয়েছে।
  2. Custom Sorting (Using Comparator):
    • যদি আপনি List-এর উপাদানগুলো একটি কাস্টম অর্ডারে সাজাতে চান, তবে আপনি Comparator ব্যবহার করতে পারেন। এর মাধ্যমে আপনি কোন কন্ডিশন অনুযায়ী তালিকাটি সাজাতে চান তা নির্ধারণ করতে পারবেন।
  3. Stability:
    • Collections.sort() মেথডটি stable sort। অর্থাৎ, যদি দুটি উপাদান সমান হয়, তবে তাদের আপেক্ষিক অবস্থান পরিবর্তিত হবে না।
  4. Time Complexity:
    • Collections.sort() মেথডের time complexity হল O(n log n), যেখানে n হল List এর সাইজ। এটি Merge Sort বা Tim Sort অ্যালগরিদম ব্যবহার করে কাজ করে।

Collections.sort() মেথডের সাধারণ ব্যবহার:

1. Natural Ordering (Comparable Interface)

যখন আপনার List এর উপাদানগুলি Comparable ইন্টারফেস ইমপ্লিমেন্ট করে, তখন Collections.sort() মেথড তাদের natural ordering অনুযায়ী সাজিয়ে দেবে। উদাহরণস্বরূপ, String, Integer, Double ইত্যাদি ক্লাসগুলি Comparable ইন্টারফেস ইমপ্লিমেন্ট করে এবং তাদের জন্য ডিফল্ট natural ordering বিদ্যমান।

Example: Sorting Integers in Natural Order

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class CollectionsSortExample {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>();
        numbers.add(5);
        numbers.add(2);
        numbers.add(8);
        numbers.add(1);
        numbers.add(3);

        // Sorting the list using Collections.sort() (Natural Ordering)
        Collections.sort(numbers);

        // Displaying the sorted list
        System.out.println("Sorted List: " + numbers);
    }
}

Output:

Sorted List: [1, 2, 3, 5, 8]

ব্যাখ্যা:

  • Collections.sort() মেথডটি Integer উপাদানগুলোকে natural ordering (অর্থাৎ, স্বাভাবিক সংখ্যা অনুযায়ী) অনুসারে সাজিয়ে দিয়েছে।

Example: Sorting Strings in Natural Order

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class CollectionsSortStrings {
    public static void main(String[] args) {
        List<String> fruits = new ArrayList<>();
        fruits.add("Banana");
        fruits.add("Apple");
        fruits.add("Orange");
        fruits.add("Grapes");

        // Sorting the list using Collections.sort() (Natural Ordering)
        Collections.sort(fruits);

        // Displaying the sorted list
        System.out.println("Sorted List of Fruits: " + fruits);
    }
}

Output:

Sorted List of Fruits: [Apple, Banana, Grapes, Orange]

2. Custom Sorting Using Comparator

যখন আপনি উপাদানগুলোকে একটি কাস্টম শর্ত অনুযায়ী সাজাতে চান, তখন আপনি Comparator ইন্টারফেস ব্যবহার করতে পারেন। Comparator এর মাধ্যমে আপনি Collections.sort() মেথডে একটি কাস্টম তুলনা কৌশল সরবরাহ করতে পারেন।

Example: Custom Sorting Using Comparator (Sort by Length of Strings)

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class CollectionsSortWithComparator {
    public static void main(String[] args) {
        List<String> fruits = new ArrayList<>();
        fruits.add("Banana");
        fruits.add("Apple");
        fruits.add("Orange");
        fruits.add("Grapes");

        // Custom sorting using Comparator (Sorting by string length)
        Collections.sort(fruits, new Comparator<String>() {
            @Override
            public int compare(String s1, String s2) {
                return Integer.compare(s1.length(), s2.length());
            }
        });

        // Displaying the sorted list based on length of strings
        System.out.println("Sorted List (By Length): " + fruits);
    }
}

Output:

Sorted List (By Length): [Apple, Grapes, Orange, Banana]

ব্যাখ্যা:

  • এখানে Collections.sort() মেথডে একটি Comparator ব্যবহার করা হয়েছে যা String এর দৈর্ঘ্য অনুসারে তালিকাটি সাজিয়েছে। Comparator এর compare() মেথডে String গুলোর দৈর্ঘ্য তুলনা করা হয়েছে।

Example: Sorting by Reverse Order (Using Lambda Expression)

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class CollectionsSortReverseOrder {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>();
        numbers.add(5);
        numbers.add(2);
        numbers.add(8);
        numbers.add(1);
        numbers.add(3);

        // Sorting the list in reverse order using Lambda Expression
        Collections.sort(numbers, (a, b) -> b - a);

        // Displaying the sorted list in reverse order
        System.out.println("Sorted List in Reverse Order: " + numbers);
    }
}

Output:

Sorted List in Reverse Order: [8, 5, 3, 2, 1]

ব্যাখ্যা:

  • Lambda Expression ব্যবহার করে Comparator এর মাধ্যমে সংখ্যাগুলিকে reverse order (অর্থাৎ, বড় থেকে ছোট) অনুযায়ী সাজানো হয়েছে।

  • Collections.sort() মেথডটি Java তে List ডেটা স্ট্রাকচারের উপাদানগুলিকে সাজানোর জন্য একটি খুবই গুরুত্বপূর্ণ এবং কার্যকরী মেথড।
  • এটি natural ordering অনুসরণ করে, তবে Comparator ব্যবহার করে আপনি custom sorting প্রয়োগ করতে পারেন।
  • Collections.sort() মেথডের time complexity সাধারণত O(n log n), এবং এটি stable sort (এখানে সমান উপাদানগুলির আপেক্ষিক অবস্থান অপরিবর্তিত থাকে)।

এটি কার্যকরীভাবে ব্যবহার করে আপনি List এর উপাদানগুলোকে সহজে সাজাতে পারেন, এবং প্রয়োজনে কাস্টম অর্ডারেও সাজাতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...